<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
</html>

<script>
  // 英文：
  // type - 类型（即数据类型）

  /* 
  JS 的数据类型：分两类：
    第一类： 复杂数据类型（先不说）


    第二类： 基础数据类型
      基础数据类型，在 ES6(ES2015) 之前，有 5种 基础数据类型：

      1. 数字  - number
      2. 字符串 - string
      3. 布尔值 - boolean
          作用：在计算机中， 表示 `Yes` or `No`
          强调：布尔值，只有两个值：  true / false
          写法：
            var bolYes = true; // 表示 `Yes`
            var bolNo = false; // 表示 `No`
      4. 未定义 - undefined
          作用：声明了变量，但未给其赋值，则该变量的值为 `undefined`
          强调：undefined 只有上述一个作用； 
            即 undefined 这个值，永远不会被 程序员，主动地 书写出来。
      5. 空 - null
          注：null 算是 JS 先天缺陷的 一个缺陷。
          原因：null 和 undefined 的作用，几乎一致，都表示 `空`。

*/

  /* 如何 判断 变量的 类型？
      -> 用法：`typeof 表达式`
      -> 作用： 返回 表达式 的 数据类型。
        注：返回值都是 字符串

  代码示例：
    console.log(typeof data); // -> 'number';  返回  data表达式的数据类型（字符串形式表示）
    console.log(typeof "我是字符串"); // -> 'string'
    console.log(typeof true); // -> 'boolean'
    console.log(typeof undefined); // -> 'undefined'
    console.log(typeof null); // -> 'object'  ;
    // ** 强调： `typeof null` 的返回值是 'object'
    // 为什么？ -> 因为 null 是 JS的设计缺陷。
*/

  // 需求：假设 data 是后端返回的数据（即 我们前端程序员，不知道 data 中的数据类型是什么）
  // 所以，如何 判断 data 这个变量，是什么数据类型？？？
  // -> 需要用到的技术点：  `typeof 表达式`
  // `typeof 表达式` 的
  var data = 123;

  console.log(typeof data); // -> 'number';  返回  data表达式的数据类型（字符串形式表示）
  console.log(typeof "我是字符串"); // -> 'string'
  console.log(typeof true); // -> 'boolean'
  console.log(typeof undefined); // -> 'undefined'
  console.log(typeof null); // -> 'object'  ;
  // ** 强调： `typeof null` 的返回值是 'object'
  // 为什么？ -> 因为 null 是 JS的设计缺陷。
</script>
